1. Field of the Invention
The present invention relates generally to hardware and software testing and verification, and specifically to testing software on low-end emulators and computing devices.
2. Description of the Related Art
The meanings of acronyms and certain terminology used herein are given in Table 1:
TABLE 1APIApplication programming interfaceCLDCConnected, limited device configuration. CLDCis suitable for devices with 16/32-bitRISC/CISC microprocessors/controllers, havingas little as 160 KB of total memory available.HTTPHyperText Transfer ProtocolIPInternet ProtocolJ2EEJava 2 Enterprise EditionJ2MEJava 2 Micro EditionJ2SEJava 2 Standard EditionJADJava application descriptorJARJava archiveJDTSJava Device Test SuiteMIDletA MIDP applicationMIDPMobile information device profile. A set ofJava APIs, which, together with the CLDC,provides a complete J2ME application runtimeenvironment targeted at mobile informationdevices.MIDP-RIMIDP-Reference ImplementationUIUser InterfaceWTKWireless Toolkit
MIDP is defined in Mobile Information Device Profile (JSR-37), JCP Specification, Java 2 Platform, Micro Edition, 1.0a (Sun Microsystems Inc., Palo Alto, Calif., December 2000). MIDP builds on the Connected Limited Device Configuration (CLDC) of the Java 2 Platform, Micro Edition (J2ME) (available from Sun Microsystems Inc., Palo Alto, Calif.). The terms Sun, Sun Microsystems, Java, J2EE, J2ME, J2SE, and the Sun logo are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States of America and other countries. All other company and product names may be trademarks of their respective companies. A portion of the disclosure of this patent document contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Tools have been developed in recent years to aid in the design verification of hardware and software systems, for example software suites, hardware circuitry, and programmable logic designs. In order to assure that the design complies with its specifications, it is common to generate a large number of input or instruction sequences to assure that the design operates as intended under a wide variety of circumstances. In general, test systems produce a report indicating whether tests have been passed or failed, and, in some cases may even indicate a module that is estimated to be faulty.
Conventionally, in order to test a device under development (such as a mobile information device), or to test software designed to run on such a device, a developer connects the device to an appropriate test system. The target device under test may be connected to the test system either directly or via a communication emulator. The developer selects a battery of test programs to run on the target device while monitoring its behavior. Running the complete battery of tests can commonly take many hours or even days. This problem is particularly acute in testing low-end computing devices, such as cellular telephones and other mobile information devices, which have limited computing power and memory resources.
It is common to execute tests using a user interface (UI), which is typically a graphical user interface. This interface is used to control execution of the tests, and to verify that what appears on the device screen under certain circumstances is correct and consistent. Tests, which are interactively verified in this manner, are referred to herein as “UI tests”. However, since the number of different tests need for a target device under development today can easily exceed 800 or more, running such tests using a conventional user interface is indeed an onerous undertaking. It has been found that the sheer number of results to be evaluated is likely to incur operator errors during the verification process. Furthermore, running such tests using a user interface can consume valuable time and can reduce the productivity of an engineering group. Thus, testing the target device can become a serious bottleneck in the development cycle.